using B.S.Medical.ErrorCode;
using MediatR;

namespace B.S.Medical.Api.Read.Application.Command.Payment
{
    /// <summary>
    /// 获取退款信息命令
    /// </summary>
    public class GetRefundInfoCommand : IRequest<ApiResult<RefundInfoDto>>
    {
        /// <summary>
        /// 支付记录ID
        /// </summary>
        public int PaymentId { get; set; }
        
        /// <summary>
        /// 订单号（可选，如果没有PaymentId可以使用订单号查询）
        /// </summary>
        public string OrderNo { get; set; }
        
        /// <summary>
        /// 患者ID（可选，如果没有PaymentId和OrderNo可以使用患者ID查询最近的支付记录）
        /// </summary>
        public int PatientId { get; set; }
    }
    
    /// <summary>
    /// 退款信息DTO
    /// </summary>
    public class RefundInfoDto
    {
        /// <summary>
        /// 患者姓名
        /// </summary>
        public string PatientName { get; set; }
        
        /// <summary>
        /// 患者身份证号/就诊卡号
        /// </summary>
        public string IdCard { get; set; }
        
        /// <summary>
        /// 是否本人
        /// </summary>
        public bool IsSelf { get; set; }
        
        /// <summary>
        /// 卡内余额
        /// </summary>
        public decimal CardBalance { get; set; }
        
        /// <summary>
        /// 可退款金额（通常是支付金额）
        /// </summary>
        public decimal RefundableAmount { get; set; }
        
        /// <summary>
        /// 支付记录ID
        /// </summary>
        public int PaymentId { get; set; }
        
        /// <summary>
        /// 订单号
        /// </summary>
        public string OrderNo { get; set; }
    }
} 